package com.hitqz.robot.driver.util;

import java.util.HashMap;
import java.util.Map;

public enum ExecuteCodeEnum {

    SUCCESS((byte) 0x00, "成功"),

    FAILED((byte) 0x01, "执行失败，原因未知"),

    SERVICE_CODE_ERROR((byte) 0x02, "服务码错误"),

    CMD_CODE_ERROR((byte) 0x03, "命令码错误"),

    MESSAGE_HEADER_ERROR((byte) 0x04, "报文头部错误"),

    AUTO_MODE((byte) 0x80, "无法执行命令，因为机器人目前处于自动模式"),

    UPDATING_MAP((byte) 0x81, "机器人正在更新地图"),

    LOCATION_NOT_COMPLETED((byte) 0x82, "机器人定位未完成"),

    PATH_POINT_LIMIT((byte) 0x83, "路径点数量超过限制"),

    FORBIDDEN_PATH_LIMIT((byte) 0x84, "禁行路径数量超过限制"),

    FORBIDDEN_AREA_LIMIT((byte) 0x85, "禁行区域数量超过限制"),

    MANUAL_MODE((byte) 0x86, "无法执行命令，机器人处于手动模式"),

    MAP_NOT_LOADED((byte) 0x87, "地图未加载"),

    NAVIGATION_TARGET_NOT_EXIST((byte) 0x88, "导航目标点不存在"),

    NAVIGATION_TARGET_NOT_IN_PATH((byte) 0x89, "导航目标点不在指定的路径上"),

    PATH_PLAN_FAILED((byte) 0x8A, "路径规划失败，不存在可以到达目标点的路径"),

    NOT_IN_PATH((byte) 0x8B, "机器人未在路径上，无法启动导航"),

    RETURN_FAILED((byte) 0x8C, "无法返航，因为机器人在超声屏蔽区域")


    ;

    public final static Map<Byte, ExecuteCodeEnum> codeMap = new HashMap<>(20);

    //这个enum的code的映射map
    static {
        for (ExecuteCodeEnum e : ExecuteCodeEnum.values()) {
            codeMap.put(e.code, e);
        }
    }



    private final byte code;
    private final String desc;

    ExecuteCodeEnum(byte code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public byte getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }


}
